Handheld computing devices often allow users to input information by making direct contact with the display surfaces of the devices. These types of input mechanisms are referred to as contact-type input mechanisms herein. For instance, a touch input mechanism provides direct touch input events when a user touches a display surface of the computing device with a finger (or multiple fingers). A pen input mechanism provides direct pen input events when a user touches the display surface with a pen device, also known as a stylus.
Computing devices also permit a user to perform gestures by using one or more fingers or a pen device. For example, a gesture may correspond to a telltale mark that a user traces on the display surface with a finger or pen input device. The computing device correlates this gesture with an associated command. The computing device then executes the command. Such execution can occur in the course of the user's input action (as in direct-manipulation drag actions), or after the user finishes the input action.
Generally, a developer may wish to provide an expressive contact-type input mechanism that accommodates a rich set of input gestures. However, increasing the number of gestures may introduce a number of challenges. For instance, assume that a computing device accommodates two or more predefined intentional gestures that are nonetheless similar. In this case, the user may intend to enter a particular gesture, but the computing device may mistakenly interpret that gesture as another, but similar, gesture. In another case, the user may seek to perform a task using the computing device that does not involve intended interaction with a contact-type input mechanism. Yet the user may handle the computing device in a manner which causes inadvertent contact with the contact-type input mechanism. Or the user may accidently brush or bump against the display surface of the contact-type input mechanism while inputting information, which causes accidental contact with the contact-type input mechanism. The contact-type input mechanism may incorrectly interpret these accidental contacts as legitimate input events. These problems may understandably frustrate the user if they become a frequent occurrence, or, even if uncommon, if they cause significant disruption in the task that the user is performing.
A developer can address some of these concerns by developing compound idiosyncratic gestures. However, this is not a fully satisfactory solution because the user may have difficulty remembering and executing these gestures, particularly when these gestures are complex and “unnatural.” Furthermore, complex gestures often take longer for the user to articulate. For this reason, adding these types of gestures to a set of possible gestures yields diminishing returns.